package net.sinodata.smartframework.config;

import org.mybatis.spring.annotation.MapperScan;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import com.baomidou.mybatisplus.extension.plugins.pagination.optimize.JsqlParserCountOptimize;

/**
 * Description: MybatisPlus 配置文件类 相当于 SSM 中的 mybatis-plus.xml
 * 
 * @author: yinliangyun
 * @date: 2021-5-18
 */
@Configuration
@MapperScan("net.sinodata.smartframework.mapper")
public class MybatisPlusConfig {
	
	private static final Logger logger = LoggerFactory.getLogger(MybatisPlusConfig.class);
	
	/**
	 * MybatisPlus 分页插件配置
	 * 
	 * @return
	 */
    @Bean
    public PaginationInterceptor paginationInterceptor() {
    	PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
    	// 设置请求的页面大于最大页后操作， true调回到首页，false 继续请求  默认false
        // paginationInterceptor.setOverflow(false);
        // 设置最大单页限制数量，默认 500 条，-1 不受限制
        paginationInterceptor.setLimit(1000);
        // 开启 count 的 join 优化,只针对部分 left join
        paginationInterceptor.setCountSqlParser(new JsqlParserCountOptimize(true));
        logger.info("MybatisPlusConfig paginationInterceptor success");
        return paginationInterceptor;
    }

}
